package com.yami.shop.bean.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 会员提现表
 * </p>
 *
 * @author jcd
 * @since 2024-07-26
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("e_user_cash_out")
public class UserCashOut {

    @TableId(value = "id", type = IdType.AUTO)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /**
     * 用户表名
     */
    private String userAccountTable;

    /**
     * 用户表id
     */
    private String userAccountTableId;

    /**
     * 用户提现金额字段名
     */
    private String userAccountTableField;

    /**
     * 类型 bank:银行卡号提现
     */
    private String type;

    /**
     * 收款人json
     */
    private String payeeInfo;

    /**
     * 提现金额
     */
    private BigDecimal cashMoney;

    /**
     * 手续费
     */
    private BigDecimal commissionMoney;

    /**
     * 提现结果json,一般保存自动转账的响应结果
     */
    private String cashResult;

    /**
     * 状态 0:申请中 1:审批通过,已转账  2:驳回申请
     */
    private Integer state;

    /**
     * 驳回原因
     */
    private String rejectReason;

    //提现用户类型 member:普通会员 leader:团长
    private String userType;
    //提现类型 0:团长提现时,满5000需要缴纳个人所得税 1:团长提现时,需上传营业执照和提现发票
    private Integer cashOutType;

    //type为0时,缴纳的个人所得税
    private BigDecimal individualIncomeTax;
    //type为1时,自己名下的个体工商户或有限公司的营业执照和对公开户许可证
    private String businessLicenseJson;
    //type为1时,本次提现后上传的发票
    private String invoiceImgs;

    //发票驳回原因
    private String invoiceRejectReason;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long createBy;

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long updateBy;

    private Date createTime;

    private Date updateTime;

    @TableLogic(value="0",delval="1")
    private Integer delFlag;
}
